const rl = require("readline").createInterface({ input: process.stdin })

/*
素数伴侣
若两个正整数的和为素数，则这两个正整数称之为“素数伴侣”，如2和5、6和13，它们能应用于通信加密。现在密码学会请你设计一个程序，从已有的 N （ N 为偶数）个正整数中挑选出若干对组成“素数伴侣”，挑选方案多种多样，例如有4个正整数：2，5，6，13，如果将5和6分为一组中只能得到一组“素数伴侣”，而将2和5、6和13编组将得到两组“素数伴侣”，能组成“素数伴侣”最多的方案称为“最佳方案”，当然密码学会希望你寻找出“最佳方案”。

输入:

有一个正偶数 n ，表示待挑选的自然数的个数。后面给出 n 个具体的数字。

输出:

输出一个整数 K ，表示你求得的“最佳方案”组成“素数伴侣”的对数。
* */

let total = 0
rl.on('line', (line) => {
  if (total === 0) {
    total = +line
  } else {
    const oddArr = [] // 存放奇数
    const evenArr = [] // 存放偶数
    line.split(' ').forEach(n => {
      n % 2 === 0 && evenArr.push(+n)
      n % 2 !== 0 && oddArr.push(+n)
    })

    console.log(getRes(oddArr, evenArr))
  }
})

/**
 * @param oddArr 奇数数组
 * @param evenArr 偶数数组
 * */
function getRes (oddArr = [], evenArr = []) {
  const matchArr = new Array(evenArr.length).fill(0)

  // 循环奇数
  for (let i = 0; i < oddArr.length; i ++) {
    const used = new Array(evenArr.length).fill(0)
    find(oddArr[i], evenArr, used, matchArr)
  }

  return matchArr.filter(o => o !== 0).length
}

/**
 * @param oddNum 奇数
 * @param evenArr 偶数数组
 * @param used 标记配对上的偶数
 * @param matchArr 存放匹配上的的奇数
 * */
function find (oddNum, evenArr, used, matchArr) {
  // 循环偶数
  for (let i = 0; i < evenArr.length; i ++) {
    if (isPrime(oddNum + evenArr[i]) && used[i] === 0) {
      used[i] = 1 // 如果配对上就在偶数所在位置打上标记

      // 如果偶数的位置上没有奇数，直接赋值，如果有就让它挪位置
      if (matchArr[i] === 0 || find(matchArr[i], evenArr, used, matchArr)) {
        matchArr[i] = oddNum
        return true
      }
    }
  }

  return false
}

/* 判断是否是素数 */
function isPrime (num) {
  if (!num || num === 1) return false

  for (let i = 2; i * i <= num; i ++) {
    if (num % i === 0) return false
  }

  return true
}
